Il existe de nombreux jobs ETL que vous pourriez vouloir déclencher depuis votre map et le modèle que nous allons explorer dans ce blog vous aidera à y parvenir.<\/P>
Voici un cas d'utilisation, exécuter un outil web ETL qui accepte des entités de zone depuis une map comme entrée. L'outil web construit une géodatabase mobile qui est renvoyée à ma session Pro ou au widget d'analyse Experience Builder en tant que fichier local, mais vous pouvez ETL data from anywhere to anywhere, dans n'importe quel format. Les données n'ont pas besoin d'être dans votre map, ni même dans votre projet ArcGIS Pro.<\/STRONG><\/P>Spoiler<\/a> (Surlignez pour lire)<\/noscript>Notez que l'outil web tel que montré ici ne renverra pas une géodatabase mobile lorsqu'il est exécuté dans map viewer, il faudrait d'abord la zipper. C'est simple à faire avec le mobile geodatabase writer, il suffit d'écrire avec l'extension de nom de fichier .geodatabase.zip et un fichier ZIP sera automatiquement créé.<\/div>Exécution d'un outil web ETL dans Pro<\/span><\/span><\/noscript><\/div><\/div>Le téléchargement du blog contient ma boîte à outils d'exemple, alors parcourons les étapes. Il y a un outil modèle et un outil ETL dans la boîte à outils du téléchargement du blog, le modèle enveloppe l'outil ETL. J'ai utilisé ArcGIS Pro 3.6 et bien sûr ArcGIS Data Interoperability pour Pro 3.6.<\/P>ModelBuilder enveloppant l'ETL<\/span><\/span><\/P>Les choses commencent avec un paramètre d'entrée FeatureSet, dans mon cas avec une géométrie polygone destinée à être la ou les zones d'intérêt contenant un nombre quelconque de villes américaines. Au moment de l'exécution, cela vous permet de choisir depuis une couche de map, parcourir des données ou créer vos propres entités à partir de zéro. Le FeatureSet est ensuite écrit en données EsriJSON vers le chemin %scratchFolder%\esri.json. <\/STRONG>Si vous n'êtes pas familier avec la substitution de variables inline dans ModelBuilder, alors lisez à ce sujet ici<\/A>. Lorsque l'outil s'exécute localement, ce chemin sera dans le dossier scratch du projet, et lorsqu'il s'agit d'un outil web, dans le dossier scratch du job.<\/P>Maintenant un peu de voyage dans le temps. Imaginez que vous construisez le modèle ci-dessus et tout ce que vous avez est l'entrée FeatureSet et l'outil Features to JSON dans le modèle. Enregistrez et exécutez-le et vous aurez un fichier esri.json dans votre dossier scratch. Construisez maintenant votre outil ETL (intégré, dans la même boîte à outils que le modèle) qui fait ce que vous voulez donné l'entrée EsriJSON. Voici le mien.<\/P>ETL qui lit EsriJSON et fait des choses<\/span><\/span><\/P>Comme l'annotation le dit, un lecteur EsriJSON (NB : avec propriété d'entrée chemin unique) importe mon entrée map, les entités sont agrégées (je veux une entité, les multiparties sont OK) puis projetées comme je le souhaite dans mon traitement en aval. Dans mon cas, l'entité résultante est utilisée comme initiateur et filtre spatial dans un FeatureReader, qui extrait certaines données de Living Atlas et les écrit dans une géodatabase mobile avec dynamic schema<\/A>. Il y a cependant une astuce concernant le cheminement des données.<\/P>Ici je modifie les paramètres utilisateur dans l'outil ETL et le premier est un paramètre scripté SCRATCHFOLDER qui obtient ce qu'ArcPy utilise, soit localement dans Pro soit dans un dossier job dans un outil web. Les paramètres scriptés sont évalués avant tout traitement des données.<\/P>Paramètre scripté SCRATCHFOLDER<\/span><\/span><\/P>Le paramètre suivant est le chemin du fichier source EsriJSON, qui sera fourni par le modèle mais pour être sûr j'ai défini le chemin par défaut pour utiliser le paramètre scripté SCRATCHFOLDER. Notez que vous devez enregistrer l'état du paramètre après avoir ajouté SCRATCHFOLDER et rouvrir la boîte de dialogue pour utiliser la valeur dans d'autres paramètres.<\/P>Paramètre d'entrée EsriJSON<\/span><\/span><\/P>Maintenant l'astuce, la géodatabase mobile de sortie est écrite avec permission d'écrasement vers le dossier scratch.<\/P>Sortie géodatabase mobile vers dossier scratch<\/span><\/span><\/P>Retour au modèle. L'outil ETL est ajouté et le fichier EsriJSON connecté comme son entrée. La sortie de l'outil ETL est écrite vers %scratchFolder%\Extract.geodatabase.<\/P>Retour vers le futur<\/span><\/span><\/P>La dernière étape consiste à ajouter un outil modèle Calculate Value qui copie le chemin de sortie vers un nouveau paramètre de type Fichier. Ceci est nécessaire car la sortie doit être Derived pour qu'un outil web retourne des données. Assurez-vous que la sortie de l'outil ETL n'est pas définie comme intermédiaire dans ModelBuilder sinon vous n'aurez aucune sortie ! Consultez l'expression Calculate Value, elle est nécessaire pour protéger le chemin contre une interprétation comme ayant des caractères d'échappement en s'assurant qu'il s'agit d'une chaîne brute.<\/P>Expression Calculate Value<\\/span> Après quelques tests locaux j'avais un résultat que je pouvais partager en tant qu'outil web puis exécuter. Lors du partage de l'outil web j'ai réglé le niveau de message sur Info afin de pouvoir suivre l'action. J'ai utilisé ArcGIS Enterprise 12.0, compatible avec ArcGIS Pro 3.6. Assurez-vous que Data Interoperability est installé sur votre serveur ainsi que tous les packages and credentials installed<\\/A> sur le serveur par arcgis service owner user<\\/STRONG>. Il est recommandé d’ouvrir fmeworkbench.exe en tant qu’arcgis service owner user<\\/EM> (dans l’installation Data Interoperability) sur le serveur et tester les lecteurs et écrivains que vous utiliserez.<\\/p>Vue des résultats de l’outil web<\\/span><\\/span><\\/p>Dans le flux de messages ci-dessus vous pouvez voir la sortie écrite vers un dossier scratch job et elle est également téléchargée localement vers ma session Pro:<\\/p> style="width: 999px;">Les données sont retournées
Maintenant un peu de voyage dans le temps. Imaginez que vous construisez le modèle ci-dessus et tout ce que vous avez est l'entrée FeatureSet et l'outil Features to JSON dans le modèle. Enregistrez et exécutez-le et vous aurez un fichier esri.json dans votre dossier scratch. Construisez maintenant votre outil ETL (intégré, dans la même boîte à outils que le modèle) qui fait ce que vous voulez donné l'entrée EsriJSON. Voici le mien.<\/P>
ETL qui lit EsriJSON et fait des choses<\/span><\/span><\/P>Comme l'annotation le dit, un lecteur EsriJSON (NB : avec propriété d'entrée chemin unique) importe mon entrée map, les entités sont agrégées (je veux une entité, les multiparties sont OK) puis projetées comme je le souhaite dans mon traitement en aval. Dans mon cas, l'entité résultante est utilisée comme initiateur et filtre spatial dans un FeatureReader, qui extrait certaines données de Living Atlas et les écrit dans une géodatabase mobile avec
Ici je modifie les paramètres utilisateur dans l'outil ETL et le premier est un paramètre scripté SCRATCHFOLDER qui obtient ce qu'ArcPy utilise, soit localement dans Pro soit dans un dossier job dans un outil web. Les paramètres scriptés sont évalués avant tout traitement des données.<\/P>
Paramètre scripté SCRATCHFOLDER<\/span><\/span><\/P>Le paramètre suivant est le chemin du fichier source EsriJSON, qui sera fourni par le modèle mais pour être sûr j'ai défini le chemin par défaut pour utiliser le paramètre scripté SCRATCHFOLDER. Notez que vous devez enregistrer l'état du paramètre après avoir ajouté SCRATCHFOLDER et rouvrir la boîte de dialogue pour utiliser la valeur dans d'autres paramètres.<\/P>Paramètre d'entrée EsriJSON<\/span><\/span><\/P>Maintenant l'astuce, la géodatabase mobile de sortie est écrite avec permission d'écrasement vers le dossier scratch.<\/P>Sortie géodatabase mobile vers dossier scratch<\/span><\/span><\/P>Retour au modèle. L'outil ETL est ajouté et le fichier EsriJSON connecté comme son entrée. La sortie de l'outil ETL est écrite vers %scratchFolder%\Extract.geodatabase.<\/P>Retour vers le futur<\/span><\/span><\/P>La dernière étape consiste à ajouter un outil modèle Calculate Value qui copie le chemin de sortie vers un nouveau paramètre de type Fichier. Ceci est nécessaire car la sortie doit être Derived pour qu'un outil web retourne des données. Assurez-vous que la sortie de l'outil ETL n'est pas définie comme intermédiaire dans ModelBuilder sinon vous n'aurez aucune sortie ! Consultez l'expression Calculate Value, elle est nécessaire pour protéger le chemin contre une interprétation comme ayant des caractères d'échappement en s'assurant qu'il s'agit d'une chaîne brute.<\/P>Expression Calculate Value<\\/span>
Après quelques tests locaux j'avais un résultat que je pouvais partager en tant qu'outil web puis exécuter. Lors du partage de l'outil web j'ai réglé le niveau de message sur Info afin de pouvoir suivre l'action. J'ai utilisé ArcGIS Enterprise 12.0, compatible avec ArcGIS Pro 3.6. Assurez-vous que Data Interoperability est installé sur votre serveur ainsi que tous les
Je n'ai aucune association de fichiers pour les fichiers .geodatabase mais je peux ouvrir le lien dans Data Inspector :
Mobile geodatabase in Data Inspector
Maintenant, j'ai un outil web ETL que je peux partager avec mes collègues ! En parlant de collègues, je suis redevable à @SashaLockamy pour son aide à la réalisation de ceci.
Pour plus de clarté, les étapes pour construire mon outil web étaient :
N'hésitez pas à commenter dans le post avec vos expériences.
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.